vnc server Jenkins Selenium Tests
Um den vncserver beim Starten des Jenkins Server zu garantieren, habe ich ein Jenkins Pre Hooks Skript /var/lib/jenkins/bin/jenkins-hook-pre.sh
erstellt, welches den vncserver auf dem Displayport :0 mit einer Geometrie von 1280x1024 als jenkins Benutzer startet.
# Check, if the vncserver is running
vncrunning=$(ps aux | grep Xvnc4 | grep -v grep)
# If the vncserver is not running, we start them
if [ ! -n "${vncrunning}" ]; then
su - jenkins -c "vncserver :0 -geometry 1280x1024 >/dev/null 2>&1"
fi
# Wait for 3 seconds and exit the script
sleep 3 && exit 0
Im Start/Stop Skript /etc/init.d/jenkins
ist in der Start Sequenz der Aufruf des /var/lib/jenkins/bin/jenkins-hook-pre.sh
eingebunden.
....
case "$1" in
start)
[ -f /var/lib/jenkins/bin/jenkins-hook-pre.sh ] && /var/lib/jenkins/bin/jenkins-hook-pre.sh
log_daemon_msg "Starting $DESC" "$NAME"
....
Um den vncserver im laufenen Betrieb manuel zu starten, führen wir folgende Schritte als jenkins Benutzer durch.
# Zuerst werden wir zum Benutzer jenkins
root:~# su - jenkins
# Mit diesem Befehl wird der vncserver mit dem Displayport :0 und einer Fenster Geometrie von 1280x1024 Pixeln gestartet:
jenkins:~$ vncserver :0 -geometry 1280x1024
# Mit diesen Befehl kann man einen Bestimmten vncserver Prozess (hier mit dem Displayport :2) töten:
jenkins:~$ vncserver -kill :2
# Mit diesen Befehl sieht man, ob und mit welchen Displayport der vncserver läuft:
jenkins:~$ ps aux | grep Xvnc4 | grep -v grep | grep 'Xvnc4 :[0-9]*'
# Damit die Änderungen dem Jenkins Server bekannt sind, muss nach dem Starten des vncservers der Jenkins Server neu gestartet werden:
root:~# systemctl stop jenkins
root:~# systemctl start jenkins